home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 3 / Amiga Tools 3.iso / grafik / raytracing / rayshade-4.0.6.3 / examples / csg.ray < prev    next >
Text File  |  1994-08-09  |  2KB  |  121 lines

  1. /*
  2.  * csg wood block (apologies to Hofstadter)
  3.  *
  4.  * Eric Haines
  5.  *
  6.  */
  7. name letter_c
  8. difference
  9.     list
  10.         cylinder  1 0 0 -1.0 0 0 1.0
  11.         disc 1 0 0 -1.0 0 0 -1
  12.         disc 1 0 0  1.0 0 0  1
  13.     end
  14.     union
  15.         list
  16.             cylinder  0.55 0 0 -1.2 0  0 1.2
  17.             disc 0.55 0 0 -1.2 0 0 -1
  18.             disc 0.55 0 0  1.2 0 0  1
  19.         end
  20.         box 0. -.3 -1.2  1.2 0.3 1.2 
  21.     end
  22. end
  23.  
  24.  
  25. name s1 /* outer top part of s */
  26. list
  27.         cylinder 0.6125  -0.3875 0.3875 -1.0 -0.3875 0.3875 1.0
  28.         disc 0.6125 -0.3875 0.3875 -1.0 0 0 -1
  29.         disc 0.6125 -0.3875 0.3875  1.0 0 0  1
  30.         cylinder  0.6125 0.3875 -0.3875 -1.0 0.3875 -0.3875 1.0
  31.         disc 0.6125 0.3875 -0.3875 -1.0 0 0 -1
  32.         disc 0.6125 0.3875 -0.3875  1.0 0 0  1
  33. end
  34.  
  35. name s3 /* all inner part of s */
  36. union
  37.     list
  38.         cylinder  0.1625 -0.3875 0.3875 -1.2 -0.3875 0.3875 1.2
  39.         disc 0.1625 -0.3875 0.3875 -1.2 0 0 -1
  40.         disc 0.1625 -0.3875 0.3875  1.2 0 0  1
  41.         cylinder  0.1625 0.3875 -0.3875 -1.2 0.3875 -0.3875 1.2
  42.         disc 0.1625 0.3875 -0.3875 -1.2 0 0 -1
  43.         disc 0.1625 0.3875 -0.3875  1.2 0 0  1
  44.     end
  45.     box -.3875 -1.2 -1.2 .3875 1.2 1.2 
  46. end
  47.  
  48. name letter_s
  49. union
  50.     union
  51.         union
  52.             difference
  53.                 object s1
  54.                 object s3
  55.             end
  56.  
  57.             box -0.3875 0.55 -1 1 1 1 
  58.         end
  59.         box -0.3875 -0.225 -1 0.3875 0.225 1 
  60.     end
  61.     box -1 -1 -1 0.3875 -0.55 1 
  62. end
  63.  
  64.  
  65. name g3 /*all inner of g */
  66. union
  67.     list
  68.         cylinder  0.55 0 0 -1.2 0  0 1.2
  69.         disc 0.55 0 0 -1.2 0 0 -1
  70.         disc 0.55 0 0  1.2 0 0  1
  71.     end
  72.     box 0. 0. -1.2  1.2 0.425 1.2 
  73. end
  74.  
  75. name letter_g
  76. union
  77.     difference
  78.         list    /* outer part of g */
  79.             cylinder  1.0 0 0 -1.0 0 0 1.0
  80.             disc 1 0 0 -1.0 0 0 -1
  81.             disc 1 0 0  1.0 0 0  1
  82.         end
  83.         object g3
  84.     end
  85.     box 0.25 -0.3375 -1.2 1.05 0.1125 1.2 
  86. end
  87.  
  88. name csg
  89. difference
  90.     difference
  91.         object letter_s rotate 1 0 0 90
  92.         object letter_c rotate 1 0 0 90 rotate 0 0 1 90
  93.                 scale 1.2 0.8 0.8
  94.     end
  95.     object letter_g scale 0.8 0.8 1.2
  96.     /* scaling here is to avoid coincident surfaces */
  97. end
  98.  
  99. surface white ambient .1 .1 .1 diffuse .5 .5 .5
  100.  
  101. surface s1 ambient .5 .4 .3 diffuse .25 .2 .15
  102. surface lgreen ambient .07 .1 .07
  103.     diffuse .42 .6 .42
  104.     specular .28 .4 .28 specpow 10
  105.  
  106. plane white 0 0 -3  0 0 1
  107. plane white 0 3 0   0 -1 0
  108. plane white -3 0 0  1 0 0
  109.  
  110. object s1 csg /* texture wood scale 3 3 3*/
  111.  
  112. light 0.8 directional 0 0 1
  113. light 0.7 directional 0 -1 0
  114. light 0.6 directional 1 0 0
  115.  
  116. background .1 .3 .8
  117. eyep 10. -13 8.
  118. lookp 0 0 -0.3
  119. up 0 0 1
  120. fov 20.
  121.